﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Datos.Fabricas;
using Datos.Interfaces;
using Datos.DAOSqlServer;

namespace Datos.Fabricas
{
    /// <summary>
    /// Fabrica que gestiona los DAO
    /// </summary>
   public abstract class FabricaDao
   {
       #region Constructor
       public FabricaDao()
        {
          
        }
    #endregion 
        /// <summary>
        /// Metodo que devuelve la fabrica de escogencia segun la opcion dada
        /// </summary>
        /// <param name="tipoFabrica"></param>
        /// <returns></returns>
        public static FabricaDao ObtenerFabricaDeDao(int tipoFabrica) 
        {
            switch (tipoFabrica)
            {
                case 1:
                    return new FabricaSqlServer();
                case 2:
                    //return new FabricaMySql();
                default:
                    return null;
            }
            
        }
        public static FabricaDao ObtenerFabricaDaoSqlServer()
        {
            return new FabricaSqlServer();

        }

        /// <summary>
        /// Retorna la Fabrica de MySql
        /// </summary>
        /// <returns></returns>

        //public static FabricaDao obtenerFabricaDaoMySql()
        //{
        //    return new FabricaMySql();
        //}
        public abstract IDAOAccesoParticipante ObtenerDAOParticipante();
        public abstract IDAOAccesoMaquina ObtenerDAOSqlMaquina();
        public abstract IDAOAccesoCategoria ObtenerDAOCategoria();
        public abstract IDAOAccesoUsuario ObtenerDaoSqlServerUsuario();

        public abstract IDAOAccesoEvento ObtenerDaoSqlServerEvento();
        public abstract IDAOAccesoXML ObtenerDaoSqlServerXML();
        public abstract IDAOAccesoRol ObtenerDaoSqlServerRol();


        

    }
    
}
